Apache ANT-এ Multiple Build Targets ব্যবহার করা খুবই সহজ এবং এটি অত্যন্ত কার্যকরী যখন আপনি একটি প্রজেক্টের বিভিন্ন বিল্ড স্টেপ বা কাজ সম্পাদন করতে চান। ANT এর target
ট্যাগ ব্যবহার করে আপনি একাধিক টার্গেট তৈরি করতে পারেন, এবং এগুলোকে নির্দিষ্ট অর্ডারে একে অপরের উপর নির্ভরশীল করে সাজাতে পারেন।
Build Targets হল বিশেষ কাজ বা ধাপ যা ANT এর মাধ্যমে সম্পাদন করা হয়। প্রতিটি টার্গেটের মধ্যে একটি নির্দিষ্ট কাজ বা কাজের গুচ্ছ থাকতে পারে, যেমন কোড কম্পাইল করা, টেস্ট চালানো, আর্কাইভ তৈরি করা ইত্যাদি।
যখন একাধিক টার্গেট ব্যবহৃত হয়, তখন একটি টার্গেটের কাজ অন্য একটি টার্গেটের উপর নির্ভর করতে পারে, এবং ANT নিজে থেকেই সেই নির্ভরশীলতাগুলি পরিচালনা করবে।
ধরা যাক, আমাদের একটি প্রজেক্ট আছে যেখানে তিনটি কাজ করতে হবে:
<project name="MyProject" default="package" basedir=".">
<!-- Properties -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<property name="jar.name" value="myproject.jar"/>
<!-- Clean target: Remove old build files -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Compile target: Compile Java source files -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath>
<pathelement path="${lib.dir}/some-library.jar"/>
</classpath>
</javac>
</target>
<!-- Package target: Create JAR file from compiled classes -->
<target name="package" depends="compile">
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="com.myproject.Main"/>
</manifest>
</jar>
</target>
</project>
<target name="clean">
:build
ডিরেক্টরি মুছে ফেলবে, যা আগের বিল্ডের ফাইলগুলো পরিষ্কার করবে।<target name="compile">
:compile
টার্গেটটি clean
টার্গেটের উপর নির্ভরশীল। অর্থাৎ, compile
টার্গেটটি প্রথমে clean
টার্গেটটি চালাবে (যতক্ষণ না clean
সম্পন্ন হয়), তারপর কোড কম্পাইল করবে।<target name="package">
:package
টার্গেটটি compile
টার্গেটের উপর নির্ভরশীল। এটি প্রথমে compile
টার্গেটটি চালাবে, তারপর কম্পাইল করা ক্লাস ফাইলগুলোকে একটি JAR ফাইলে প্যাকেজ করবে।একটি টার্গেটের মধ্যে depends
অ্যাট্রিবিউট ব্যবহার করে অন্য টার্গেটগুলির উপর নির্ভরশীলতা তৈরি করা হয়। যখন একটি টার্গেটের উপর অন্য একটি টার্গেট নির্ভরশীল থাকে, তখন সেই টার্গেটটি প্রথমে চালানো হবে, এবং শুধুমাত্র নির্ভরশীল টার্গেটটি সফলভাবে সম্পন্ন হলে পরবর্তী টার্গেটটি চালানো হবে।
depends
এর উদাহরণ:<target name="compile" depends="clean">
<!-- Compile Java source files -->
</target>
<target name="package" depends="compile">
<!-- Create JAR file -->
</target>
depends="clean"
: compile
টার্গেটটি clean
টার্গেটের উপর নির্ভরশীল, তাই প্রথমে clean
চলবে।depends="compile"
: package
টার্গেটটি compile
টার্গেটের উপর নির্ভরশীল, অর্থাৎ প্রথমে কোড কম্পাইল হবে, তারপর JAR ফাইল তৈরি হবে।আপনি যখন ANT রান করেন, আপনি একাধিক টার্গেটও নির্দিষ্ট করতে পারেন। ANT টার্গেটগুলি নির্দিষ্ট অর্ডারে চালায়, এবং একটি টার্গেট যদি অন্য একটি টার্গেটের উপর নির্ভরশীল হয়, তবে প্রথমে সেই নির্ভরশীল টার্গেটটি সম্পন্ন হবে।
ant clean compile package
এই কমান্ডটি প্রথমে clean
টার্গেটটি চালাবে, তারপর compile
এবং পরে package
টার্গেটটি চালাবে। যদি আপনি শুধুমাত্র একটি টার্গেট চালাতে চান, যেমন শুধুমাত্র compile
, তাহলে:
ant compile
যদি টার্গেটের মধ্যে নির্ভরশীলতা না থাকে, তবে আপনি একে অপরের সাথে স্বাধীনভাবে টার্গেটগুলো ব্যবহার করতে পারেন। তবে, ANT কাজ করবে নির্দিষ্ট আদেশে টার্গেটগুলো সম্পন্ন করার জন্য।
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<javac srcdir="src" destdir="build"/>
</target>
<target name="test">
<junit>
<classpath>
<pathelement path="build"/>
</classpath>
<test name="TestClass"/>
</junit>
</target>
এখানে clean
, compile
, এবং test
টার্গেটগুলি একে অপরের উপর নির্ভরশীল নয়। আপনি যে কোন টার্গেট আলাদাভাবে চালাতে পারবেন:
ant clean
ant compile
ant test
আপনি একটি ডিফল্ট টার্গেট নির্দিষ্ট করতে পারেন, যা কোনও টার্গেট নাম ছাড়া যখন ANT চালানো হয় তখন স্বয়ংক্রিয়ভাবে রান হবে। ডিফল্ট টার্গেটের নাম default
অ্যাট্রিবিউটে উল্লেখ করা হয়।
<project name="MyProject" default="compile">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<javac srcdir="src" destdir="build"/>
</target>
</project>
এখানে, যদি আপনি ant
কমান্ডটি চালান, তবে compile
টার্গেটটি ডিফল্টভাবে রান হবে কারণ সেটি default="compile"
হিসেবে নির্দিষ্ট করা হয়েছে।
depends
: একটি টার্গেটের নির্ভরশীলতা সৃষ্টির জন্য depends
অ্যাট্রিবিউট ব্যবহার করা হয়। ANT নির্ভরশীল টার্গেটগুলি স্বয়ংক্রিয়ভাবে রান করে।default
অ্যাট্রিবিউট দিয়ে ডিফল্ট টার্গেট নির্দিষ্ট করা যায়, যা ANT রান করার সময় প্রথমে চালানো হয়।Multiple build targets ব্যবহারের মাধ্যমে আপনি একটি প্রজেক্টের বিল্ড প্রক্রিয়া ভালোভাবে সংহত করতে পারেন এবং কাজগুলোকে আরও নিয়মিত ও কার্যকরভাবে সাজাতে পারেন।
common.read_more